package com.apache.netty.protocoltcp;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.nio.charset.Charset;
import java.util.UUID;

// 处理业务的handler
public class MyServerHandler extends SimpleChannelInboundHandler<MessageProtocol> {
  private int count;

  @Override
  public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
    // cause.printStackTrace();
    ctx.close();
  }

  @Override
  protected void channelRead0(ChannelHandlerContext ctx, MessageProtocol msg) throws Exception {

    // 接收到数据，并处理
    int len = msg.getLen();
    byte[] content = msg.getContent();

    System.out.println();
    System.out.println();
    System.out.println();
    System.out.println("服务器接收到信息如下");
    System.out.println("长度=" + len);
    System.out.println("内容=" + new String(content, Charset.forName("utf-8")));

    System.out.println("服务器接收到消息包数量=" + (++this.count));

    // 回复消息

    String responseContent = UUID.randomUUID().toString();
    int responseLen = responseContent.getBytes("utf-8").length;
    byte[] responseContent2 = responseContent.getBytes("utf-8");
    // 构建一个协议包
    MessageProtocol messageProtocol = new MessageProtocol();
    messageProtocol.setLen(responseLen);
    messageProtocol.setContent(responseContent2);

    ctx.writeAndFlush(messageProtocol);
  }
}
